Skip to content

feat: 원장을 만든 호출이 만들었다고 말한다 — 막지 않고 보이게 (#48 재구성) - #49

Merged
bhyi4 merged 2 commits into
mainfrom
feat/ledger-birth-notice-v2
Aug 30, 2026
Merged

feat: 원장을 만든 호출이 만들었다고 말한다 — 막지 않고 보이게 (#48 재구성)#49
bhyi4 merged 2 commits into
mainfrom
feat/ledger-birth-notice-v2

Conversation

@bhyi4

@bhyi4 bhyi4 commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

♻️ #48 의 재구성이다. 내용은 그대로고, base 만 main 으로 바꿔 다시 올린다.

왜 다시 올리나 — #48 은 결정이 아니라 사고로 닫혔다

#48#47 위에 포개서 올린 PR 이었다(base = fix/preseal-checks-wire-schema).
#47--delete-branch 로 머지하자 받침 브랜치가 사라졌고 깃허브가 #48 을 자동으로 닫았다.
대장님 답은 163a(셋 다 머지)였으니 승인 범위 안이었다.

포개서 올린 PR 은 밑장이 빠질 때 윗장이 조용히 사라진다 — 승인이 나 있어도 안 들어간다.
base 를 형제 브랜치로 잡은 게 원인이고, 그건 내 실수다. 이번엔 base=main 이다.

재구성 방법 (내용 변경 0)

cbd9e053(원본) 을 origin/main(9596b98e) 위로 rebase. 충돌 없었다
git 이 #47 의 커밋을 이미 반영된 것으로 인식해 건너뛰고, 출생 알림 커밋 하나만 재적용했다.
main 대비 커밋 1개 · 118줄 추가, #48 과 동일하다.

내용 (원문 그대로)

144a 가 세운 문(없는 원장 생성 거부)은 main() 안이라 CLI 에만 걸린다. 08-26 에 신고된
두 건은 API 경로였다 — 이 서버의 모든 툴이 그 경로다. ⇒ 수리가 신고된 곳에 안 닿았다.

API 를 막으면 전 레인 봉인이 멈추니 막지 않고 보이게 한다:

추가
mm_preregister ⚠️ new_ledger_created + lint㉘ ledger-birth WARN
mm_retract · am_record · am_witness · pm_verify ⚠️ new_ledger_created

절대경로를 찍는다 — 이 실패 양식의 본질이 "내가 어느 디렉터리에 있는지 모른다"라서
no such file 은 도움이 안 된다. WARN 등급을 고른 이유: 출력 압축이 WARN 만 원문 그대로 둔다.

이 구멍은 다른 무엇으로도 못 메운다 — 갓 태어난 원장의 체인은 완벽히 성하다.
그래서 무결성 검사는 전부 초록이고 어떤 프로브도 이 파일이 새것이라 말할 이유가 없다.
그 정보가 존재하는 순간은 만드는 그 호출 하나뿐이다.

시험

4건 신설, 그중 둘은 음성대조(이어 쓸 땐 안 뜬다). 항상 뜨는 알림은 소음이고,
소음은 읽는 쪽이 건너뛰는 법을 배운다 — 이 PR 이 고치려는 병과 같은 병이다.

pytest 66 통과(파이프 없이 · exit 0).
🔬 시험이 워크트리 사본을 읽는지 먼저 확인하고 돌렸다(공유 editable 설치본을 읽으면
엉뚱한 코드를 재게 된다). mirror_stack_mcp.__file__ 이 워크트리를 가리키는 것을 실측.

판 번호

안 올린다. main0.2.13 인데 태그도 릴리스도 아직 없다(미발행) — 그러니 이 변경은
[0.2.13] 항목 안에 들어가는 게 맞다.
⚠️ 다만 그래서 main 이 태그보다 앞선 상태다(현재 최신 태그 v0.2.12). 태그·릴리스는 별건.

08-26 에 신고된 두 건은 **MCP 경로**였다. 0.41.0 이 세운 문(없는 원장 생성 거부)은
`main()` 안에 있어 CLI 에만 걸린다 — 이 서버의 모든 툴은 파이썬 API 로 가므로
그 문을 통째로 지나친다. 그래서 수리가 정작 신고된 경로에 닿지 않았다.

API 를 막는 건 답이 아니다. 대부분의 호출자가 안 하는 실수 때문에 **전 레인 봉인이
멈춘다**. 그래서 막지 않고 **보이게** 한다.

`mm_preregister`·`mm_retract`·`am_record`·`am_witness`·`pm_verify` 가 응답에
`⚠️ new_ledger_created` 를 실어 **절대경로**를 찍는다. `mm_preregister` 는 추가로
`lint` 안에 `㉘ ledger-birth` WARN 을 낸다 — 압축이 WARN 은 원문 그대로 두고
나머지는 개수로 접기 때문에 이 줄만 살아남는다.

★ 이건 스택의 다른 무엇도 못 메우는 구멍이다. 갓 태어난 원장의 체인은 **완벽히
  성하다**. 그래서 무결성 검사는 전부 초록이고, 어떤 프로브도 이 파일이 새것이라고
  말할 이유가 없다. 그 정보가 존재하는 순간은 **만드는 그 호출 하나뿐**이다.

시험 4건 — 그중 둘이 **음성대조**다(이어 쓸 때는 안 뜬다). 항상 뜨는 알림은 소음이고,
소음은 읽는 쪽이 건너뛰는 법을 배운다.

pytest 66 통과(파이프 없이 · exit 0).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
카드 171 에 대한 대장님 답 b(기호만 안 겹치는 것으로 바꾼 뒤 머지) 집행이다.

measure-mirror 의 mm.py 는 ㉑~㉘ 를 한 등록부로 쓰고, 그 ㉘ 는 이미
Subspace claim — declaration auditor 다(하위 항목 schema / no-anchor /
energy-not-matched / null-ladder). 이 PR 이 붙인 ledger-birth 가 같은 번호를
두 번째 뜻으로 쓰고 있었다. 다음 빈 번호인 ㉙ 로 옮긴다.

바꾼 것은 기호 두 자리뿐이다 — server.py 의 Finding 이름과 0.2.13 절 한 줄.
0.2.10 절의 옛 ㉘ 두 줄은 진짜 ㉘ 를 가리키므로 그대로 뒀다.
시험은 기호가 아니라 ledger-birth 문자열로 검사하므로 안 깨진다. pytest 66 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bhyi4
bhyi4 merged commit 0de19ba into main Aug 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant